/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package network.socketprogram;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author anh_yeu_em_nhieu_lam
 */
public class Client extends Thread {

    private Socket clientsocket;
    private ObjectInputStream input;
    private ObjectOutputStream output;
    private String inmessage;
    private String stringread;
    private BufferedReader reader;

    public Client() {
        try {
            clientsocket = new Socket("localhost", 1986); //Lắng nghe server localhost cổng 1986           

        } catch (UnknownHostException ex) {
            Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Override
    public void run() {
        try {
            reader = new BufferedReader(new InputStreamReader(System.in));//Không được cho vô vòng while T_T
            output = new ObjectOutputStream(clientsocket.getOutputStream());//Không được cho vô vòng while T_T vì nếu cho sẽ thay đổi bộ ghi
            input = new ObjectInputStream(clientsocket.getInputStream());//Không được cho vô vòng while T_T vì nếu cho sẽ thay đổi bộ đọc
            while (true) {
                //Sẽ đọc dữ liệu của người dùng nhập vào cho đến khi người dùng gõ mãi             
                stringread = reader.readLine();              
                output.writeObject(stringread);
                inmessage = (String) input.readObject();
                System.out.print("Server send : " + inmessage);
            }
        } catch (IOException ex) {
            Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
        }finally{
            try {
                reader.close();
                input.close();
                output.close();
                clientsocket.close();
            } catch (IOException ex) {
                Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
            }           
        }
    }

    public static void main(String[] args) {
        new Client().start();
    }
}
